#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h>
#define separadores "!?;:.,()"

int tam;
char *copia;

/*estrutura para lista de palavras*/
typedef struct lista{
	char* word;
	struct lista *nxt;
} list, *ap_list;

/*Transforma as letras em minusculas*/
void str_lower(char *string, int tamanho)
{
	int i;
	if(string == NULL)
		return;
	else
		for(i=0;i<tamanho;i++)
			string[i] = tolower(string[i]);
}

/*copia string para um vetor dinamico*/
char *str_copy(char *original, int tam)
{
	return (char *)malloc(tam*sizeof(char));
}

/*troca separadores   ex10a*/
void str_separators(char *str)
{
	//lembra de copiar str para um vetor dinamico****************************************************
	int i;
	//int tam = strlen(str);
	for(i = 0; str[i] != 0; i++)
	{
		if( strchr(separadores, str[i]) )
			str[i] = ' ';
	}
}

void str_2spaces(char *str, char *str1)
{
	//lembra de copiar str para um vetor dinamico****************************************************
	int i;
	
	//int tam = strlen(str);
	for(i = 0; str[i] != '\0'; i++){
		
		
		if(str[i]==' ' && str[i+1]==' '){
                     
			++i;
			//printf("%c",str[i]);
		}
		str1[i] = str[i];
	}
}


/*cria lista*/
void list_new(ap_list lista)
{
	lista = (ap_list)malloc(sizeof(list));
	lista->nxt = NULL;
	lista->word = NULL;
}

/*tokeniza uma string*/
int str_token(char *string, ap_list lista)
{
	int count = 0;
	char* aux;
	ap_list atual;

	list_new(lista);//cria a lista
	//primeira tokenização
	atual = lista;
	aux = strtok(string, "separadores");
	atual->word = aux;

	if(aux == NULL)
		return count;
	else
	{
		count++;
		//proximas tokenizações
		while(aux != NULL)
		{
			aux = strtok(NULL, "!?.;; ");
			atual->nxt = (ap_list)malloc(sizeof(list));
			atual = atual->nxt;
			atual->word = aux;
			count++;
		}
		return count;
	}
}

//imprime a lista
void list_print(ap_list lista)
{
	ap_list aux;
	for(aux = lista;aux != NULL;aux = aux->nxt)
	{
		printf("%s - ", aux->word);
	}
}

int main(int argc, char** argv)
{
	int qtd;
	char *str = argv[1];
	char *str1 = (char *)malloc(strlen(str)*sizeof(char));
	str_2spaces(str,str1);
	printf("%s\n", str1);
	printf("%d\n", argc);
/*	ap_list lista;
	tam = strlen("teste teste");
	str_lower(argv[1], tam);
	list_new(lista);
	qtd = str_token(argv[1], lista);
*/
	system("pause");
    return 0;
}

